参数和返回值

在编程中,函数是组织代码的基本单元。函数不仅可以执行特定的任务,还可以接受输入(参数)并返回输出(返回值)。理解参数和返回值的概念对于编写高效、可重用的代码至关重要。

1. 参数

参数是函数在调用时接收的输入值。通过参数,函数可以处理不同的数据,从而实现更灵活的功能。

1.1 定义参数

在PHP中,定义函数时可以指定参数。参数可以是任何有效的数据类型,如整数、字符串、数组等。

function greet($name) {
    echo "Hello, $name!";
}

在上面的例子中,$name 是一个参数。调用 greet 函数时,需要传递一个值给 $name。

1.2 调用函数并传递参数

调用函数时,传递的值称为实参。实参可以是常量、变量或表达式。

greet("Alice"); // 输出: Hello, Alice!
greet("Bob");   // 输出: Hello, Bob!

1.3 默认参数

PHP允许为参数设置默认值。如果在调用函数时没有传递该参数,函数将使用默认值。

function greet($name = "Guest") {
    echo "Hello, $name!";
}

greet();        // 输出: Hello, Guest!
greet("Alice"); // 输出: Hello, Alice!

1.4 可变数量的参数

有时,函数需要处理不确定数量的参数。PHP提供了 ... 语法来处理这种情况。

function sum(...$numbers) {
    $total = 0;
    foreach ($numbers as $number) {
        $total += $number;
    }
    return $total;
}

echo sum(1, 2, 3); // 输出: 6
echo sum(4, 5, 6, 7); // 输出: 22

2. 返回值

返回值是函数执行完毕后返回的结果。通过返回值,函数可以将处理后的数据传递给调用者。

2.1 定义返回值

在PHP中,使用 return 语句来定义返回值。返回值可以是任何有效的数据类型。

function add($a, $b) {
    return $a + $b;
}

$result = add(3, 5);
echo $result; // 输出: 8

2.2 返回多个值

虽然PHP函数通常只返回一个值,但可以通过数组或对象返回多个值。

function getUserInfo() {
    return [
        "name" => "Alice",
        "age" => 30,
        "email" => "[email protected]"
    ];
}

$user = getUserInfo();
echo $user["name"]; // 输出: Alice
echo $user["age"];  // 输出: 30

2.3 无返回值

有些函数只执行某些操作而不返回任何值。这种情况下,函数可以省略 return 语句或使用 return; 表示无返回值。

function logMessage($message) {
    echo "Log: $message";
    return; // 可选
}

logMessage("Error occurred"); // 输出: Log: Error occurred

3. 实践练习

3.1 练习1:计算圆的面积

编写一个函数 calculateCircleArea,接受圆的半径作为参数,并返回圆的面积。

function calculateCircleArea($radius) {
    return pi() * $radius * $radius;
}

$area = calculateCircleArea(5);
echo "The area of the circle is: $area"; // 输出: The area of the circle is: 78.539816339745

3.2 练习2:检查字符串是否为回文

编写一个函数 isPalindrome,接受一个字符串作为参数,并返回布尔值,表示该字符串是否为回文。

function isPalindrome($str) {
    $str = strtolower(str_replace(' ', '', $str));
    return $str === strrev($str);
}

echo isPalindrome("racecar") ? 'true' : 'false'; // 输出: true
echo isPalindrome("hello") ? 'true' : 'false';   // 输出: false

3.3 练习3:计算数组的平均值

编写一个函数 calculateAverage,接受一个数组作为参数,并返回数组中所有元素的平均值。

function calculateAverage($numbers) {
    $total = array_sum($numbers);
    $count = count($numbers);
    return $count > 0 ? $total / $count : 0;
}

$avg = calculateAverage([1, 2, 3, 4, 5]);
echo "The average is: $avg"; // 输出: The average is: 3

4. 总结

参数和返回值是函数的重要组成部分。通过参数,函数可以接收外部数据;通过返回值,函数可以将处理结果传递给调用者。掌握这些概念,可以帮助你编写更灵活、可重用的代码。

在接下来的课程中,我们将深入探讨变量作用域、匿名函数和闭包等更高级的主题。